package cn.b.sky.mes.hr.service.impl;

import java.util.List;

import cn.b.sky.mes.hr.service.PersonnelExceptionService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.b.sky.mes.hr.dao.PersonnelExceptionDao;
import cn.b.sky.mes.hr.model.PersonnelException;
import cn.b.sky.mes.hr.model.condition.PersonnelExceptionCondition;
import cn.b.sky.common.constants.SystemConstant;
import cn.b.sky.common.utils.DatabaseUtils;

@Service
public class PersonnelExceptionServiceImpl implements PersonnelExceptionService {

  private static final Logger LOG = LoggerFactory.getLogger(PersonnelExceptionServiceImpl.class);

  @Autowired
  private PersonnelExceptionDao personnelExceptionDao;

  @Override
  public PersonnelException getPersonnelExceptionById(Long id) {
    return personnelExceptionDao.getPersonnelExceptionById(id);
  }

  @Override
  public void insertPersonnelException(PersonnelException personnelException) {
    personnelExceptionDao.insertPersonnelException(personnelException);
  }

  @Override
  public void updatePersonnelException(PersonnelException personnelException) {
    personnelExceptionDao.updatePersonnelException(personnelException);
  }

  @Override
  public String deletePersonnelException(Long id) {
    String message = null;
    try {
      personnelExceptionDao.deletePersonnelException(id);
    } catch (Exception e) {
      LOG.error("{}", e);
      String errorMsg = e.getMessage();
      if (DatabaseUtils.isConstraintsError(e.getMessage())) {
        // 外键删除已存在提示
        message = SystemConstant.DATABASE_OPERATION_FK;
      } else {
        message = SystemConstant.DWZ_CODE_ERROR_MESSAGE;
      }
    }
    return message;
  }

  @Override
  public List<PersonnelException> getPersonnelExceptionListByCondition(PersonnelExceptionCondition condition) {
    return personnelExceptionDao.getPersonnelExceptionListByCondition(condition);
  }

  @Override
  public int getPersonnelExceptionCountByCondition(PersonnelExceptionCondition condition) {
    return personnelExceptionDao.getPersonnelExceptionCountByCondition(condition);
  }

  @Override
  public boolean isPeresonnelExceptionValid(PersonnelException personnelException) {
    if (personnelExceptionDao.isPeresonnelExceptionValid(personnelException) > 0) {
      return false;
    }
    return true;
  }

}
